Crate qrecovery

Source
Expand description

Crate to implement reliable transmission.

The structures in this crate dont have the ability to send or receive frames directly, but they provide interfaces to generate frames and write them into buffers, handle received frames, and handle frame acknowledgment and loss. This is what Incoming, Outgoing, DataStreams, CryptoStreamIncoming, CryptoStreamOutgoing and CryptoStream do.

The reliable module of this crate provids the records for sent and received packets, and a reliable frame queue to ensure that the frames in it will be sent to the peer and confirmed.

The sent record can provide a packet number for the new packet (although the QUIC packet number is incremented, the packet number stored in the packet header is encoded).

The sent records are also responsible for processing the ack frames sent by the other party. Through the other party’s ack frames, which packets have been confirmed can be known, and then the frames in these packets are fed back to DataStreams and CryptoStream for processing.

The loss of packets is determined by congestion control, and sending records can feed back the frame in may lost data packets to DataStreams and CryptoStream.

The received records are used to generate the ack frame, and decode the packet number in the packet received.

Modules§

  • The reliable transmission of the crypto stream.
  • The space that reliably transmites frames.
  • Types for receiving data on a Stream.
  • The reliable transmission for frames.
  • Types for sending data on a Stream.
  • The internal implementation of the QUIC stream.